unit FormPermissaoAcessoUnit;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, JvExDBGrids, JvDBGrid, Vcl.StdCtrls,
  Vcl.Grids, Vcl.DBGrids, Data.DB, Datasnap.DBClient, Vcl.Buttons, Vcl.ImgList,
  Vcl.Mask, Vcl.DBCtrls, System.Actions, Vcl.ActnList, Vcl.ExtCtrls;

type
  TFormPermissaoAcesso = class(TForm)
    DataSource1: TDataSource;
    ImageList1: TImageList;
    ActionList1: TActionList;
    ActionESC: TAction;
    Panel1: TPanel;
    Panel2: TPanel;
    DBGridPermissao: TDBGrid;
    DBGridUsuario: TDBGrid;
    BitBtnAdicionar: TBitBtn;
    BitBtn3: TBitBtn;
    ButtonEditar: TButton;
    DBEditPermissao: TDBEdit;
    BitBtnSair: TBitBtn;
    Panel3: TPanel;
    JvDBGrid1: TJvDBGrid;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure DataSource1DataChange(Sender: TObject; Field: TField);
    procedure BuscaID(id: string);
    procedure BitBtnAdicionarClick(Sender: TObject);
    procedure DBEditPermissaoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure DBGridPermissaoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);

    procedure RegistraPermissao();
    procedure BitBtnSairClick(Sender: TObject);
    procedure JvDBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    procedure ButtonEditarClick(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }

  end;

var
  FormPermissaoAcesso: TFormPermissaoAcesso;
  modo : String;

implementation

{$R *.dfm}

uses DMDadosUnt, uVerificaPermissao;

procedure TFormPermissaoAcesso.BitBtn3Click(Sender: TObject);
begin

  DMDados.cdsPermissao.Delete;
  DMDados.cdsPermissao.ApplyUpdates(-1);

end;

procedure TFormPermissaoAcesso.BitBtnAdicionarClick(Sender: TObject);
begin
JvDBGrid1.OnDrawColumnCell := nil;


  DBGridPermissao.Enabled := false;

  DBEditPermissao.Visible := True;

  DBEditPermissao.SetFocus;

  DMDados.cdsPermissao.Append;

  modo := 'INCLUSAO';

end;

procedure TFormPermissaoAcesso.BitBtnSairClick(Sender: TObject);
begin
close;
end;

procedure TFormPermissaoAcesso.BuscaID(id: string);
begin
  DMDados.cdsControle.Close;
  DMDados.cdsControle.Params[0].AsString := id;
  DMDados.cdsControle.Open;
end;

procedure TFormPermissaoAcesso.ButtonEditarClick(Sender: TObject);
begin
  DBGridPermissao.Enabled := false;

  DBEditPermissao.Visible := True;

  DBEditPermissao.SetFocus;

  modo := 'EDICAO';

end;

procedure TFormPermissaoAcesso.DataSource1DataChange(Sender: TObject;
  Field: TField);
begin
  DMDados.cdsUsuarioConsulta.Close;
  DMDados.cdsUsuarioConsulta.Params[0].AsInteger := DMDados.cdsPermissaoID_PERMISSAO.AsInteger;
  DMDados.cdsUsuarioConsulta.Open;

  DMDados.cdsModuloAcesso.Close;
  DMDados.cdsModuloAcesso.Params[0].AsInteger := DMDados.cdsPermissaoID_PERMISSAO.AsInteger;
  DMDados.cdsModuloAcesso.Open;

 DMDados.cdsVirtModuloAceso.EmptyDataSet;

 DMDados.cdsVirtModuloAceso.Open;
 DMDados.cdsVirtModuloAceso.Edit;
 DMDados.cdsVirtModuloAceso.First;

 DMDados.cdsModuloAcesso.First;

  while not DMDados.cdsModuloAcesso.Eof do
  begin


    DMDados.cdsVirtModuloAceso.Edit;
    DMDados.cdsVirtModuloAceso.Append;

    DMDados.cdsVirtModuloAcesoDescricao.AsString := DMDados.cdsModuloAcessoDESCRICAO_ACESSO.AsString;
    DMDados.cdsVirtModuloAcesoid_permissao.AsInteger := DMDados.cdsModuloAcessoID_PERMISSAO.AsInteger;
    DMDados.cdsVirtModuloAcesoid_permissao_acesso.AsInteger := DMDados.cdsModuloAcessoID_PERMISSAO_ACESSO.AsInteger;
    //acesso
    if  DMDados.cdsModuloAcessoACESSO.AsString = 'S' then
    begin
      DMDados.cdsVirtModuloAceso.Edit;
      DMDados.cdsVirtModuloAcesoAcesso.AsBoolean := True;
      DMDados.cdsVirtModuloAceso.Post;

    end
    else
    begin
      DMDados.cdsVirtModuloAceso.Edit;
      DMDados.cdsVirtModuloAcesoAcesso.AsBoolean := False;
      DMDados.cdsVirtModuloAceso.Post;
    end;
    //edicao
    if  DMDados.cdsModuloAcessoEDICAO.AsString = 'S' then
    begin
      DMDados.cdsVirtModuloAceso.Edit;
      DMDados.cdsVirtModuloAcesoEdicao.AsBoolean := True;
      DMDados.cdsVirtModuloAceso.Post;

    end
    else
    begin
      DMDados.cdsVirtModuloAceso.Edit;
      DMDados.cdsVirtModuloAcesoEdicao.AsBoolean := False;
      DMDados.cdsVirtModuloAceso.Post;
    end;
    //exclusao
    if  DMDados.cdsModuloAcessoEXCLUSAO.AsString = 'S' then
    begin
      DMDados.cdsVirtModuloAceso.Edit;
      DMDados.cdsVirtModuloAcesoExclusao.AsBoolean := True;
      DMDados.cdsVirtModuloAceso.Post;

    end
    else
    begin
      DMDados.cdsVirtModuloAceso.Edit;
      DMDados.cdsVirtModuloAcesoExclusao.AsBoolean := False;
      DMDados.cdsVirtModuloAceso.Post;
    end;

    //inclusao
    if  DMDados.cdsModuloAcessoINCLUSAO.AsString = 'S' then
    begin
      DMDados.cdsVirtModuloAceso.Edit;
      DMDados.cdsVirtModuloAcesoInclusao.AsBoolean := True;
      DMDados.cdsVirtModuloAceso.Post;

    end
    else
    begin
      DMDados.cdsVirtModuloAceso.Edit;
      DMDados.cdsVirtModuloAcesoInclusao.AsBoolean := False;
      DMDados.cdsVirtModuloAceso.Post;
    end;


  DMDados.cdsModuloAcesso.Next;



  end;
end;

procedure TFormPermissaoAcesso.DBEditPermissaoKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if Key = VK_RETURN then
  begin

    if DBEditPermissao.Text = '' then
    begin
      MessageDlg('Favor preencher o campo.',mtInformation,[mbOK],0);
      DBEditPermissao.SetFocus;
      Exit;
    end;


    if modo = 'INCLUSAO' then
    begin

      BuscaID('ID_PERMISSAO');
      DMDados.cdsPermissaoID_PERMISSAO.AsInteger := DMDados.cdsControleVALOR.AsInteger;

      DMDados.cdsControle.Edit;
      DMDados.cdsControleVALOR.AsInteger := DMDados.cdsControleVALOR.AsInteger + 1;
      DMDados.cdsControle.ApplyUpdates(-1);

      DMDados.cdsPermissao.Post;
      DMDados.cdsPermissao.ApplyUpdates(-1);

      DBEditPermissao.Visible := false;
      DBGridPermissao.Enabled := true;

      RegistraPermissao;

      JvDBGrid1.OnDrawColumnCell := JvDBGrid1DrawColumnCell;

      DBGridPermissao.DataSource.DataSet.DisableControls;
      DBGridPermissao.DataSource.DataSet.Last;
      DBGridPermissao.DataSource.DataSet.EnableControls;
    end;

    if modo = 'EDICAO' then
    begin
      DMDados.cdsPermissao.Post;
      DMDados.cdsPermissao.ApplyUpdates(-1);
      DBEditPermissao.Visible := false;
      DBGridPermissao.Enabled := true;
    end;


  end;




end;

procedure TFormPermissaoAcesso.DBGridPermissaoKeyDown(Sender: TObject;
  var Key: Word; Shift: TShiftState);
begin
  if key = VK_DOWN then
  begin
    key := 0;
    DMDados.cdsPermissao.Next;
  end
  else
  if key = VK_UP then
  begin
    key := 0;
    DMDados.cdsPermissao.Prior;
  end;
end;

procedure TFormPermissaoAcesso.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
DMDados.cdsPermissao.AfterScroll := nil;
end;

procedure TFormPermissaoAcesso.FormCreate(Sender: TObject);
begin
  DMDados.cdsPermissao.Close;
  DMDados.cdsPermissao.Open;

  DMDados.dsPermissao.OnDataChange := DataSource1DataChange;




  DMDados.cdsVirtModuloAceso.Open;
  DMDados.cdsPermissao.First;

//  DataSource1DataChange(DMDados.dsPermissao);
end;

procedure TFormPermissaoAcesso.FormShow(Sender: TObject);
begin

  DBGridPermissao.SetFocus;
end;

procedure TFormPermissaoAcesso.JvDBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);

var
vList: variant;
begin
 vList := VarArrayCreate([0, 1], varVariant);
 vList[0] := DMDados.cdsVirtModuloAcesoid_permissao.AsString;
 vList[1] := DMDados.cdsVirtModuloAcesoid_permissao_acesso.AsString;

 if DMDados.cdsVirtModuloAcesoid_permissao.AsString = '' then
   exit;


 DMDados.cdsModuloAcesso.locate('ID_PERMISSAO;ID_PERMISSAO_ACESSO', vList, []);

 //acesso
 if DMDados.cdsVirtModuloAcesoAcesso.AsBoolean then
 begin
  DMDados.cdsModuloAcesso.Edit;
  DMDados.cdsModuloAcessoACESSO.AsString := 'S';
  DMDados.cdsModuloAcesso.ApplyUpdates(-1);
 end
 else
 begin
  DMDados.cdsModuloAcesso.Edit;
  DMDados.cdsModuloAcessoACESSO.AsString := 'N';
  DMDados.cdsModuloAcesso.ApplyUpdates(-1);
 end;
      //edicao
  if DMDados.cdsVirtModuloAcesoEdicao.AsBoolean then
 begin
  DMDados.cdsModuloAcesso.Edit;
  DMDados.cdsModuloAcessoEDICAO.AsString := 'S';
  DMDados.cdsModuloAcesso.ApplyUpdates(-1);
 end
 else
 begin
  DMDados.cdsModuloAcesso.Edit;
  DMDados.cdsModuloAcessoEDICAO.AsString := 'N';
  DMDados.cdsModuloAcesso.ApplyUpdates(-1);
 end;
 //inclusao
  if DMDados.cdsVirtModuloAcesoInclusao.AsBoolean then
 begin
  DMDados.cdsModuloAcesso.Edit;
  DMDados.cdsModuloAcessoINCLUSAO.AsString := 'S';
  DMDados.cdsModuloAcesso.ApplyUpdates(-1);
 end
 else
 begin
  DMDados.cdsModuloAcesso.Edit;
  DMDados.cdsModuloAcessoINCLUSAO.AsString := 'N';
  DMDados.cdsModuloAcesso.ApplyUpdates(-1);
 end;
 //exclusao
  if DMDados.cdsVirtModuloAcesoExclusao.AsBoolean then
 begin
  DMDados.cdsModuloAcesso.Edit;
  DMDados.cdsModuloAcessoEXCLUSAO.AsString := 'S';
  DMDados.cdsModuloAcesso.ApplyUpdates(-1);
 end
 else
 begin
  DMDados.cdsModuloAcesso.Edit;
  DMDados.cdsModuloAcessoEXCLUSAO.AsString := 'N';
  DMDados.cdsModuloAcesso.ApplyUpdates(-1);
 end;
end;

procedure TFormPermissaoAcesso.RegistraPermissao;
begin


  DMDados.cdsModuloAcesso.Append;

  DMDados.cdsModuloAcessoID_PERMISSAO_ACESSO.AsInteger := 1;
  DMDados.cdsModuloAcessoID_PERMISSAO.AsInteger := dmdados.cdsPermissaoID_PERMISSAO.AsInteger;
  DMDados.cdsModuloAcessoDESCRICAO_ACESSO.AsString := 'Tela Cadastro OS';
  DMDados.cdsModuloAcessoACESSO.AsString   := 'N';
  DMDados.cdsModuloAcessoEDICAO.AsString   := 'N';
  DMDados.cdsModuloAcessoEXCLUSAO.AsString := 'N';
  DMDados.cdsModuloAcessoINCLUSAO.AsString := 'N';

  DMDados.cdsModuloAcesso.Post;

  DMDados.cdsModuloAcesso.Append;

  DMDados.cdsModuloAcessoID_PERMISSAO_ACESSO.AsInteger := 2;
  DMDados.cdsModuloAcessoID_PERMISSAO.AsInteger := dmdados.cdsPermissaoID_PERMISSAO.AsInteger;
  DMDados.cdsModuloAcessoDESCRICAO_ACESSO.AsString := 'Tela Acompanhamento OS';
  DMDados.cdsModuloAcessoACESSO.AsString   := 'N';
  DMDados.cdsModuloAcessoEDICAO.AsString   := 'N';
  DMDados.cdsModuloAcessoEXCLUSAO.AsString := 'N';
  DMDados.cdsModuloAcessoINCLUSAO.AsString := 'N';

  DMDados.cdsModuloAcesso.Post;





  DMDados.cdsModuloAcesso.ApplyUpdates(-1);
//  DMDados.dsVirtModuloAceso.Refresh;

end;

end.
